2 research outputs found

    UVM testbench in Python:feature and performance comparison with SystemVerilog implementation

    Get PDF
    Abstract. Python is emerging as a new language for functional verification of digital integrated circuits (ICs). With the Python verification framework cocotb enabling to write testbenches in Python, new libraries are being developed for various verification techniques and methodologies, such as functional coverage, constrained random verification and Universal Verification Methodology (UVM). Python testbenches have been used in some research and product development, but there is little information available on their performance, and no studies about applying UVM in Python have been published. In this thesis, a Python UVM testbench was developed using pyuvm and other Python verification libraries for an AHB-Lite slave IP, and a matching testbench in SystemVerilog was also built to examine the differences in their implementations. Testbench codebase sizes, simulation execution times, memory use and coverage accumulation were compared. The Python testbench had 30% less lines of code, suggesting that testbench development may be faster in Python than SystemVerilog. The execution times of the Python testbench on commercial simulators were 8 to 21 times longer than those of the SystemVerilog testbench in tests with AHB-Lite write operations and random stimulus. In conclusion, given the performance gap and the UVM Register Abstraction Layer (RAL) being at an early stage of development in pyuvm, the studied Python libraries are not competitive with SystemVerilog and its UVM implementation for verifying complex designs like systems-on-chip (SoCs) at this stage. Nevertheless, pyuvm enables Python programmers and users of open-source simulators without support for SystemVerilog UVM to start using the methodology. A Python UVM testbench based on pyuvm is currently viable for verifying simple designs, and it opens new avenues of research in digital IC verification.Tiivistelmä. Python on nousemassa uudeksi kieleksi digitaalisten integroitujen piirien varmennukseen. Cocotb-viitekehys mahdollistaa testipenkkien kirjoittamisen Pythonilla, ja uusia Python-kirjastoja kehitetään eri varmennusmenetelmille, kuten funktionaaliselle kattavuudelle, rajoitetulla satunnaisherätteellä verifioinnille ja universaalille varmennusmenetelmälle (engl. Universal Verification Methodology, UVM). Python-testipenkkejä on pienissä määrin käytetty tutkimuksissa ja tuotekehityksessä, mutta niiden suorituskyvystä on hyvin vähän tietoa, ja UVM:n käytöstä Pythonilla ei ole julkaistu tutkimuksia. Tässä työssä kehitettiin UVM-testipenkki Pythonilla AHB-Lite-orjana toimivalle IP-lohkolle käyttäen pyuvm:ää ja muita Python-verifiointikirjastoja, ja vastaava testipenkki luotiin myös SystemVerilogilla toteutusten vertailua varten. Testipenkeistä verrattiin koodikannan kokoa, suoritusaikaa, muistin käyttöä ja kattavuuden kertymistä. Python-testipenkissä oli 30 % vähemmän koodirivejä, mikä voi merkitä, että testipenkkien kehittäminen Pythonilla on nopeampaa kuin SystemVerilogilla. Suoritusajat kaupallisilla simulaattoreilla oli Python-testipenkillä 8–21 kertaa pidempiä kuin SystemVerilog-testipenkillä testeissä, joissa ajettiin AHB-Lite -kirjoitusoperaatioita ja satunnaisherätettä. Koska suorituskykyero oli näin merkittävä, ja koska UVM:n rekisteriabstraktiotaso (engl. Register Abstraction Layer, RAL) on vasta alkutekijöissään pyuvm:ssä, voidaan todeta, että tutkitut Python-kirjastot eivät ole vielä nykyisellä tasollaan kilpailukykyisiä SystemVerilogin ja sen UVM-implementaation kanssa monimutkaisten piirien kuten järjestelmäpiirien varmennukseen. Siitä huolimatta pyuvm mahdollistaa UVM:n käytön Python-ohjelmoijille ja avoimen lähdekoodin simulaattoreissa, joissa ei ole vielä SystemVerilog UVM:lle tukea. Pyuvm-pohjainen Python UVM-testipenkki soveltuu tällä hetkellä yksinkertaisten mallien varmennukseen ja avaa uusia tutkimussuuntia digitaalisten integroitujen piirien varmennukseen

    VIP-komponentin käyttö SystemVerilog-testipenkissä

    Get PDF
    Tiivistelmä. Digitaalipiirien kasvava kompleksisuus asettaa entistä korkeammat vaatimukset myös mallin varmentavalle testipenkille. Yksi menetelmä vähentää varmennuksen kuormitusta on käyttää eri väyläprotokollille kehitettyjä valmiita varmennuskomponentteja, joita kutsutaan VIP-komponenteiksi (engl. Verification Intellectual Property). Tässä työssä perehdytään Siemens EDA:n I2C Questa VIP-komponentin (QVIP) käyttöön ja varmennetaan tämän avulla äärellisen impulssivasteen (engl. Finite Impulse Response, FIR) suodattimen I2C-väylän toimivuus. Työssä kehitetään testipenkki, jossa VIP-komponentti vastaa I2C-väylän ohjauksesta ja väylän herätteen generoinnista. Joukko testejä luodaan simuloimaan suodattimen eri käyttötilanteita ja väylän virheskenaarioita. Varmennettavat väylän ominaisuudet on kerätty QVIP:iin kuuluvaan varmennussuunnitelmaan, josta seurataan testeissä saavutettua funktionaalista kattavuutta. Suodatinpiiri läpäisee testit, ja valituissa ominaisuuksissa saavutetaan yli 95 prosentin kattavuus. Johtopäätöksenä voidaan todeta, että QVIP:n avulla varmennettiin suodatinpiirin väylän toimivuus. QVIP:n valmiit testipenkkikomponentit ja testisekvenssit säästivät vaivaa testipenkin ja testien kehityksessä, ja sen väyläprotokollan noudattamista seuraavat assertiot paransivat varmennuksen laatua. Lista varmennettavista ominaisuuksista oli myös helppo laatia valmiin varmennussuunnitelman pohjalta. VIP-komponenttien käsittelyn lisäksi työ sisältää lyhyen katsauksen SystemVerilog-varmennuskieleen ja järjestelmäpiirien varmennusteknologioihin kuuluviin assertiopohjaiseen varmennukseen ja universaaliin varmennusmenetelmään.The use of verification ip component in a SystemVerilog testbench. Abstract. The growing complexity of digital integrated circuits sets increasingly higher requirements for the testbenches that verify the design. One method to ease the burden of verification is to use premade verification components developed for various bus protocols. These components are called Verification Intellectual Properties (VIP). In this work, Siemens EDA’s I2C Questa VIP (QVIP) is used to verify the functionality of the I2C bus in a finite impulse response (FIR) filter design. A testbench is developed where QVIP controls the I2C bus and generates test stimulus. A group of test cases are created to simulate different FIR filter use cases and I2C bus error scenarios. The verified features of the I2C bus are collected in a verification plan. The plan is part of QVIP and is used to follow the total functional coverage achieved with the tests. The filter design passes all the tests and over 95 percent functional coverage is reached in the selected features. In conclusion, the functionality of the I2C bus in the filter was successfully verified using QVIP. The premade testbench components and test sequences of QVIP saved effort in testbench and test development, and its protocol assertions improved verification quality. In addition to VIPs, the work includes a brief overview of the verification language SystemVerilog and two system-on-chip (SoC) verification methodologies: Universal Verification Methodology (UVM) and assertion-based verification
    corecore